home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / p063b9s.zip / UNIT / SCRBLANK.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-28  |  4KB  |  139 lines

  1. UNIT ScrBlank;
  2. {╔══════════════════════════════════════════════════════════════════════════╗}
  3. {║ Screen blank/unblank                          Last changed: 28.04.96  SA ║}
  4. {║                                                                          ║}
  5. {║                         (C) Copyright 1989-96 by                         ║}
  6. {║       Dan Wulff, Jens Sandalgaard, Steen Christensen & S¢ren Ager        ║}
  7. {║                                                                          ║}
  8. {║ This source may not be given to anybody, without the written permission  ║}
  9. {║ from The Portal Team.                                                    ║}
  10. {╚══════════════════════════════════════════════════════════════════════════╝}
  11. {$I POPDEFS.INC}
  12.  
  13. INTERFACE
  14.  
  15. USES Use32;
  16.  
  17. VAR
  18.   BlankKbdFlags: Byte;
  19.  
  20. PROCEDURE TurnScreen(On: Boolean);
  21. PROCEDURE MoveClock;
  22.  
  23. IMPLEMENTATION
  24.  
  25. USES OpCrt, OpDate, OpWindow, OpFrame, ApTimer,
  26. {$IFDEF OS2}
  27.      VpUtils,
  28. {$ENDIF}
  29.      Globals, Util, MTask;
  30.  
  31. VAR
  32.   CursorXY, CursorSL : Word;
  33.   ClockWin, BlankWin : WindowPtr;
  34.   LastTic  : LongInt;
  35.  
  36.   PROCEDURE MoveClock;
  37.   VAR
  38.     X, Y : Word;
  39.   BEGIN
  40. {$IFDEF OS2}
  41.     IF (ClockWin<>NIL) AND ((GetTimemSec-LastTic)>=1000) OR (GetTimemSec<LastTic) THEN
  42.     BEGIN
  43.       IF (GetTimemSec-LastTic)>=10000 THEN
  44. {$ELSE}
  45.     IF (ClockWin<>NIL) AND ((BiosTics^-LastTic)>=18) OR (BiosTics^<LastTic) THEN
  46.     BEGIN
  47.       IF (BiosTics^-LastTic)>=182 THEN
  48. {$ENDIF}
  49.       BEGIN
  50.         X:=Random(ScreenWidth-23); Y:=Random(ScreenHeight-7);
  51.         ClockWin^.AdjustWindow(x,y,x+20,y+2);
  52. {$IFDEF OS2}
  53.         LastTic:=GetTimemSec;
  54. {$ELSE}
  55.         LastTic:=BiosTics^;
  56. {$ENDIF}
  57.       END;
  58.       ClockWin^.wFastText(TodayString('dd nnn yy')+'  '+CurrentTimeString('hh:mm:ss'),2,2);
  59.     END;
  60.   END;
  61.  
  62.   PROCEDURE TurnScreen(On: Boolean);
  63.   VAR
  64.     p : Word;
  65.     Offset, i : Byte;
  66.     t : EventTimer;
  67.   BEGIN
  68.     IF (Cfg.Screen.HardwareBlank) And (Multitasker=0) THEN
  69.     BEGIN
  70.       IF CurrentDisplay IN [EGA, VGA] THEN
  71.       BEGIN
  72.         i:=Port[$03ba];
  73.         i:=Port[$03da];
  74.         IF On THEN Port[$03c0]:=$20 ELSE Port[$03c0]:=$00;
  75.       END ELSE
  76.       BEGIN
  77.         IF CurrentDisplay=MonoHerc THEN p:=$03B8 ELSE p:=$03D8;
  78.         IF On THEN i:=$29 ELSE i:=$21;
  79.         Port[p]:=i;
  80.       END;
  81.     END ELSE
  82.     BEGIN
  83.       IF Not On THEN
  84.       BEGIN
  85.         IF Not ScreenBlanked THEN
  86.         BEGIN
  87.           GetCursorState(CursorXY, CursorSL);
  88.           New(BlankWin, Init(1, 1, ScreenWidth, ScreenHeight));
  89.           BlankWin^.SetCursor(cuHidden);
  90.           BlankWin^.Draw;
  91.           IF NOT Cfg.Screen.HardwareBlank OR ((Multitasker>0) AND Cfg.Screen.HardwareBlank) THEN
  92.           BEGIN
  93.             Randomize;
  94.             Offset:=(ScreenWidth-80) DIV 2;
  95.             New(ClockWin, InitCustom(29+Offset,10,49+Offset,12, Cfg.Color[2],wBordered+wClear+wSaveContents));
  96.             ClockWin^.wFrame.AddHeader(' Portal of Power ', heTC);
  97.             ClockWin^.wFrame.AddShadow(shBR, shOverWrite);
  98.             IF Cfg.Screen.ExplodingWin THEN ClockWin^.EnableExplosions(10);
  99.             ClockWin^.Draw;
  100.             ClockWin^.wFastText(TodayString('dd nnn yy')+'  '+CurrentTimeString('hh:mm:ss'),2,2);
  101.           END;
  102. {$IFDEF OS2}
  103.           LastTic:=GetTimemSec;
  104. {$ELSE}
  105.           LastTic:=BiosTics^;
  106. {$ENDIF}
  107.         END;
  108.       END ELSE
  109.       BEGIN
  110.         IF ScreenBlanked THEN
  111.         BEGIN
  112.           IF ClockWin<>NIL THEN
  113.           BEGIN
  114.             ClockWin^.EraseHidden;
  115.             Dispose(ClockWin, Done);
  116.             ClockWin:=NIL;
  117.           END;
  118.           BlankWin^.EraseHidden; Dispose(BlankWin, Done);
  119.           RestoreCursorState(CursorXY, CursorSL);
  120.         END;
  121.       END;
  122.     END;
  123.     ScreenBlanked:=NOT On;
  124.     NewTimerSecs(ScreenBlank, Cfg.Screen.BlankTime);
  125.     IF NOT On THEN
  126.     BEGIN
  127.       NewTimerSecs(t, 10);
  128.       WHILE (KbdFlags AND $08<>0) AND NOT TimerExpired(t) DO
  129.         GiveUpTime;
  130.     END;
  131.     BlankKbdFlags:=KbdFlags;
  132.   END;
  133.  
  134. BEGIN
  135.   BlankKbdFlags:=KbdFlags;
  136.   ClockWin:=NIL;
  137. END.
  138.  
  139.